// src/types.ts

/**
 * 
 */
export interface FswqData {
  /** 防具的唯一标识符，不允许重复。 */
  readonly id: string;

  /** 防具在游戏中显示的名字。 */
  readonly name: string;


  /**
   * 防具的效果类型。
   * 'bodyNear': 近身攻击
   * 'none': 无特殊效果
   */
  readonly attackType: "bodyNear" | "none";

  /**
   * 防具造成的基础伤害。
   * 这是防具在攻击时附加的基础伤害值。
   */
  readonly attackBasicDamage: number;

  /**
   * 防具的附加伤害。
   * 计算方法: 玩家等级*该属性
   */
  readonly attackLevelAdd: number;

  /**
   * 防具的攻击持续时间。
   * 这是防具攻击时的持续时间，单位为毫秒。
   */
  readonly attackTime: number;

  /**
   * 防具的攻击冷却时间。
   * 这是防具攻击后需要等待的时间，单位为毫秒。
   */
  readonly attackCoolingTime: number;

  /**
   * 防具的防御力。
   * 这是防具提供的基础防御值。
   */
  readonly defense: number;

  /**
   * 防具的攻击防御力。
   * 这是防具在攻击时提供的额外防御值。
   */
  readonly attackDefense: number;

  /**
   * 防具的攻击特效网格。
   * 这是防具在攻击时使用的网格资源，用于显示攻击效果。
   */
  readonly attackMesh: GameModelAssets;
}

export interface ZswqData {
  /** 武器的唯一标识符，不允许重复。 */
  readonly id: string;
  /** 武器在游戏中显示的名字。 */
  readonly name: string;

  /**
   * 武器的效果类型。
   * 'bodyNear': 近身攻击
   * 'raycast': 射线位置释放
   */
  readonly attackType: "bodyNear" | "raycast";

  /**
   * 武器造成的基础伤害。
   * 这是武器在攻击时附加的基础伤害值。
   */
  readonly attackBasicDamage: number;

  /**
   * 武器的附加伤害。
   * 计算方法: 玩家等级*该属性
   */
  readonly attackLevelAdd: number;

  /**
   * 武器的攻击持续时间。
   * 这是武器攻击时的持续时间，单位为毫秒。
   */
  readonly attackTime: number;

  /**
   * 武器的攻击冷却时间。
   * 这是武器攻击后需要等待的时间，单位为毫秒。
   */
  readonly attackCoolingTime: number;


  /**
   * 武器的攻击特效网格。
   * 这是武器在攻击时使用的网格资源，用于显示攻击效果。
   */
  readonly attackMesh: GameModelAssets;

  /**
   * 武器的攻击特效缩放。
   * 这是武器在攻击时使用的网格缩放，用于调整攻击效果的大小。
   */
  readonly attackMeshScale: GameVector3;
  
  /**
   * 武器的攻击方式。
   * 'zone': 区域攻击
   * 'radius': 半径攻击
   */
  readonly attackWays: "zone" | "radius";

  /**
   * 武器的攻击范围。
   * 若攻击方式为'zone',则为区域攻击范围；
   * 若攻击方式为'radius',则为半径攻击范围。
   */
  readonly attackRange: GameVector3 | number;

  /**
   * 是否显示攻击范围。
   * 如果为 true，则在攻击时(zone)会显示攻击范围的单元方块。
   * (radius)不支持显示攻击范围。(即肯定为false)
   */
  readonly showAttackRange: boolean;

  /**
   * 武器攻击特效所播放的动画。
   */
  readonly attackMotion: string;

  /**
   * 控制玩家(entity.player)的数据
   */
  readonly playerControl:{type:string, once:any , after:any}[];
}